import {createWebHistory, createRouter} from 'vue-router'

// import Son1 from '@/components/9导航守卫/1.子组件.vue'
// import Son2 from '@/components/9导航守卫/2.子组件.vue'
import {inject} from 'vue'
let a = inject('id')




// 定义路由路径
const routes = [
    {
        path: '/son',
        name: "son1",
        component: () => import('@/components/9导航守卫/1.子组件.vue')

    },
    {
        path: '/son1',
        name: "son2",
        component: Son2
    },
]

const router = createRouter({
    history: createWebHistory(),
    routes,
})

// 注册全局前置守卫
// to: 要去哪里
// from：从哪里来
// next：放行 官方不推荐使用
// 守卫是异步解析执行
router.beforeEach((to, from) => {
    console.log('to=', to)
    console.log('from=', from)
    // console.log('next=', next())
    // 1.返回false终止导航，从哪里回哪里去
    // return false
    // 2.返回一个路由地址
    // return { name: 'son1' }
    // return '/son1'
    // 3.无返回值 则直接放行  继续走下一个导航守卫
    // 4.返回true，则直接放行  继续走下一个导航守卫
    // return true
    // if (to.name !== 'son2') {
    //     next({ name: 'son2' })
    // }else {
    //     // 放行
    //     next()
    // }
    // 但是必须走到放行或者 返回路由
    console.log('id=', a)
})

// 在执行守卫的过程中如果发生异常 会走异常方法
router.onError(() => {
    console.log('异常')
})

// 拿到出现失败的原因
router.afterEach((to, from, failure) => {

})



export default router